#pragma once

#include <vector>

class IEntity;

class CObjectManager
{
public:
	static CObjectManager*	GetInstance( void );
	static void				DeleteInstance( void );

	void	AddObject	(	IEntity* ptr );
	void	RemoveObject(	IEntity* ptr );
	void	RemoveAllObjects( void );

	void	UpdateAllObjects( float fElapsedTime );
	void	RenderAllObjects( void );
	void	CheckCollisions( void );

private:
	static CObjectManager* s_Instance;


	CObjectManager(void);
	CObjectManager( const CObjectManager& );
	CObjectManager& operator=( const CObjectManager& );
	~CObjectManager(void);

	typedef std::vector< IEntity* > ObjectList;
	typedef ObjectList::iterator OListIterator;

	ObjectList m_Objects;
};

